目的
当工作的主项目要用到其他仓库的项目时,就是git 子模块(git submodule)的用武之地了。因为重新下载其他仓库源码并复制到主项目中去,比较麻烦,而且这种工作流显得很怪异。此时使用git submodule是更好的选择。
主项目中添加子模块(子项目)
切换到所要添加子模块的目录中去,输入命令git submodule add git@github.com:2997215859/gr-roi.git
,即会添加该子模块。
ruiy@ruiy-All-Series:~/store/ROI/GModule$ git submodule add git@github.com:2997215859/gr-roi.git
正克隆到 'GModule/gr-roi'...
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (5/5), done.
接收对象中: 100% (5/5), 4.73 KiB | 0 bytes/s, 完成.
remote: Total 5 (delta 0), reused 0 (delta 0), pack-reused 0
检查连接... 完成。
ruiy@ruiy-All-Series:~/store/ROI/GModule$ git status
要提交的变更:
(使用 "git reset HEAD <文件>..." 以取消暂存)
新文件: ../.gitmodules
新文件: gr-roi
此时主项目根目录下也出现了新文件.gitmodule。里面保存着本地子模块的路径以及子模块的上游源
ruiy@ruiy-All-Series:~/store/ROI$ cat .gitmodules
[submodule "GModule/gr-roi"]
path = GModule/gr-roi
url = git@github.com:2997215859/gr-roi.git
切到子模块的上级目录,执行git diff --cached gr-roi
可以看到在子模块目录之外,主项目git并